Enhancements in Personal REXX 3.0 Here is a summary of the major new features in Personal REXX 3.0: * Performance Many REXX programs will run significantly faster with Personal REXX 3.0 than they did with Personal REXX 2.0 (which itself was much faster than earlier versions). Some programs will run more than twice as fast, and one beta tester reported that parts of his application were more than 6 times as fast. Areas which will show the greatest improvement include integer arithmetic, simple loops, and some common character-string functions (like RIGHT, LEFT, SUBSTR, WORD). However, almost every program will exhibit a noticeable performance improvement. * Ability to run large applications A swapping capability has been added that allows REXX programs to invoke large applications like databases, spreadsheets, or graphics with only about 2K bytes of overhead. In effect, there is no longer any limitation due to the size of the REXX language processor on the sorts of work you can do with REXX. Swapping may be either to disk (including ramdisk) or EMS. Control over when swapping is done and the location of the swap file is provided by a new built-in function. For greatest flexibility, defaults for the swap parameters can be provided by a DOS environment variable. * Compatibility Personal REXX 3.0 is compatible with MS-DOS and PC-DOS 5.0. It is also compatible in both language and built-in functions with IBM's OS/2 (Release 1.3) REXX implementation. Programs written for the IBM REXX which do not use OS/2-specific features should, in most cases, run unmodified in DOS with Personal REXX. (DOS memory limitations may place restrictions on program size.) * New REXX language features Personal REXX now supports the most recent REXX language features, as described in the second edition of Mike Cowlishaw's The REXX Language. (This reference is included in the upgrade package, but may be omitted for a slight saving of cost.) The new features include: - The VALUE function can now set variables as well as retrieve their values (eliminating the need to use the INTERPRET instruction in many cases). It can also retrieve and set values of DOS environment variables. - A list of variables can be supplied to EXPOSE as the value of another variable, making it much easier to expose variables that need to be globally available throughout a program. - Variables can now be used in PARSE templates for positional patterns. That is, variables can be used to specify absolute or relative column numbers. - A NOTREADY condition has been implemented to allow handling of I/O errors. A STREAM built-in function has been added to perform certain kinds of I/O operations. - Handlers for the ERROR, FAILURE, HALT, and NOTREADY conditions can be invoked by CALL as well as SIGNAL. This makes it possible to return to the point of error after processing the condition. Several different handlers for each type of condition can be provided in the same program, since the label that identifies the handler no longer needs to be the same as the name of the condition. * New built-in functions A number of additional built-in functions have been defined. They provide new capabilities such as: - syntax checking of file names, and identification of device and directory names - changing the time/date stamp on a file - saving and restoring all environment variables, and determination of the total size and free space available in the DOS environment * More flexible use of resident programs The REXX "Interrupt Manager" is no longer required if one doesn't need the services it enables. All Personal REXX resident programs can be unloaded when they are not needed. * Licensed run-time version available A version of the REXX language processor that is capable of running previously compiled Personal REXX programs has been created. It cannot by itself execute uncompiled programs. The run-time module is not included with the standard Personal REXX retail package or the 3.0 upgrade package. Instead, it will be provided under the terms of a special license from Quercus Systems for a specified number of copies. This license permits software developers to distribute the run-time module and any necessary Personal REXX utilities with their applications, without requiring end users to pay for a complete Personal REXX package.